# 引入 ThreadPoolExecutor 用于线程池管理
from concurrent.futures import ThreadPoolExecutor
import time

# 定义一个模拟请求的函数（例如请求网页内容）
def fetch(url):
    print(f"请求 {url}")             # 模拟发起请求
    time.sleep(2)                   # 模拟网络延迟（耗时操作）
    return f"{url} 页面内容"         # 模拟返回内容

# 定义要请求的 URL 列表
urls = ['url1', 'url2', 'url3']

# 创建线程池，最大线程数为 3（并发处理最多 3 个任务）
with ThreadPoolExecutor(max_workers=3) as executor:
    
    # 使用线程池提交每一个 fetch(url) 任务，返回的是 Future 对象
    futures = [executor.submit(fetch, url) for url in urls]
    
    # 遍历每个 future，调用 .result() 获取执行结果（会阻塞直到该线程完成）
    for f in futures:
        print("结果：", f.result())  # 打印每个任务的结果

# 所有线程任务完成，打印提示
print("全部完成")
